Sistemas de Ecuaciones Lineales

Comparativa Interactiva: Métodos de Jacobi y Gauss-Seidel

Método de Jacobi

$$ x_i^{(k+1)} = \frac{1}{a_{ii}} \left( b_i - \sum_{j \neq i} a_{ij} x_j^{(k)} \right) $$

Usa exclusivamente los valores de la iteración previa en todo el ciclo.

Leer A, b, Tol, MaxIter Lee la matriz de coeficientes, vector b, tolerancia y límite iterativo.
X_old = [0, 0, ..., 0] Inicializa el vector de aproximaciones iniciales en cero.
Para k desde 1 hasta MaxIter Hacer: Inicia el ciclo principal de iteraciones.
Para i desde 1 hasta n Hacer: Recorre cada fila o ecuación del sistema.
Suma = 0 Limpia el acumulador para la sumatoria lineal.
Para j desde 1 hasta n Hacer:
Si (i != j) Entonces: Evita el elemento de la diagonal principal.
Suma = Suma + A[i,j] * X_old[j] Suma utilizando solo valores fijos de la iteración pasada.
Fin Para
X_new[i] = (b[i] - Suma) / A[i,i] Calcula el nuevo valor despejando con el coeficiente diagonal.
Fin Para
Error = MaximoAbsolute(X_new - X_old) Calcula el error máximo absoluto (Norma infinito).
Si (Error < Tol) Entonces Salir Si cumple la tolerancia, el sistema convergió y termina.
X_old = X_new Actualiza el vector por completo para la siguiente iteración.
Fin Para
Mostrar X_new

Método de Gauss-Seidel

$$ x_i^{(k+1)} = \frac{1}{a_{ii}} \left( b_i - \sum_{j=1}^{i-1} a_{ij} x_j^{(k+1)} - \sum_{j=i+1}^n a_{ij} x_j^{(k)} \right) $$

Sustitución sucesiva: Incorpora inmediatamente los valores nuevos recién calculados.

Leer A, b, Tol, MaxIter Lee matriz A, vector b, tolerancia y límite de ciclos.
X = [0, 0, ..., 0] Inicializa un único vector dinámico en memoria.
Para k desde 1 hasta MaxIter Hacer: Ciclo iterativo global.
Error = 0 Inicializa el rastreador de error máximo para este paso.
Para i desde 1 hasta n Hacer: Recorre el sistema fila por fila.
X_previo = X[i] Guarda el valor viejo de la variable actual antes de cambiarlo.
Suma = 0 Inicializa el acumulador para los productos de la fila.
Para j desde 1 hasta n Hacer:
Si (i != j) Entonces:
Suma = Suma + A[i,j] * X[j] Usa X[j] directamente (puede ser un valor nuevo si j < i).
Fin Para
X[i] = (b[i] - Suma) / A[i,i] Actualiza inmediatamente la variable en el vector general.
Si (|X[i] - X_previo| > Error) Entonces:
Error = |X[i] - X_previo| Sustituye si este cambio local es mayor al error registrado.
Fin Para
Si (Error < Tol) Entonces Salir Termina el algoritmo al alcanzar la precisión buscada.
Fin Para
Mostrar X

Simulador de Sistemas 3x3 e Historial de Convergencia

x₁ + x₂ + x₃ =
x₁ + x₂ + x₃ =
x₁ + x₂ + x₃ =
Solución Encontrada (x₁, x₂, x₃)
--
Iteraciones totales: --